<!DOCTYPE html>

<html>
  <head>
    <title>Protocol Documentation</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>
    <style>
      body {
        width: 60em;
        margin: 1em auto;
        color: #222;
        font-family: "Ubuntu", sans-serif;
        padding-bottom: 4em;
      }

      h1 {
        font-weight: normal;
        border-bottom: 1px solid #aaa;
        padding-bottom: 0.5ex;
      }

      h2 {
        border-bottom: 1px solid #aaa;
        padding-bottom: 0.5ex;
        margin: 1.5em 0;
      }

      h3 {
        font-weight: normal;
        border-bottom: 1px solid #aaa;
        padding-bottom: 0.5ex;
      }

      a {
        text-decoration: none;
        color: #567e25;
      }

      table {
        width: 100%;
        font-size: 80%;
        border-collapse: collapse;
      }

      thead {
        font-weight: 700;
        background-color: #dcdcdc;
      }

      tbody tr:nth-child(even) {
        background-color: #fbfbfb;
      }

      td {
        border: 1px solid #ccc;
        padding: 0.5ex 2ex;
      }

      td p {
        text-indent: 1em;
        margin: 0;
      }

      td p:nth-child(1) {
        text-indent: 0;  
      }

       
      .field-table td:nth-child(1) {  
        width: 10em;
      }
      .field-table td:nth-child(2) {  
        width: 10em;
      }
      .field-table td:nth-child(3) {  
        width: 6em;
      }
      .field-table td:nth-child(4) {  
        width: auto;
      }

       
      .extension-table td:nth-child(1) {  
        width: 10em;
      }
      .extension-table td:nth-child(2) {  
        width: 10em;
      }
      .extension-table td:nth-child(3) {  
        width: 10em;
      }
      .extension-table td:nth-child(4) {  
        width: 5em;
      }
      .extension-table td:nth-child(5) {  
        width: auto;
      }

       
      .enum-table td:nth-child(1) {  
        width: 10em;
      }
      .enum-table td:nth-child(2) {  
        width: 10em;
      }
      .enum-table td:nth-child(3) {  
        width: auto;
      }

       
      .scalar-value-types-table tr {
        height: 3em;
      }

       
      #toc-container ul {
        list-style-type: none;
        padding-left: 1em;
        line-height: 180%;
        margin: 0;
      }
      #toc > li > a {
        font-weight: bold;
      }

       
      .file-heading {
        width: 100%;
        display: table;
        border-bottom: 1px solid #aaa;
        margin: 4em 0 1.5em 0;
      }
      .file-heading h2 {
        border: none;
        display: table-cell;
      }
      .file-heading a {
        text-align: right;
        display: table-cell;
      }

       
      .badge {
        width: 1.6em;
        height: 1.6em;
        display: inline-block;

        line-height: 1.6em;
        text-align: center;
        font-weight: bold;
        font-size: 60%;

        color: #89ba48;
        background-color: #dff0c8;

        margin: 0.5ex 1em 0.5ex -1em;
        border: 1px solid #fbfbfb;
        border-radius: 1ex;
      }
    </style>

    
    <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
  </head>

  <body>

    <h1 id="title">Protocol Documentation</h1>

    <h2>Table of Contents</h2>

    <div id="toc-container">
      <ul id="toc">
        
          
          <li>
            <a href="#pkg%2fapis%2fmicroservice%2fv1alpha1%2fenvoy_plugin.proto">pkg/apis/microservice/v1alpha1/envoy_plugin.proto</a>
            <ul>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.EnvoyPlugin"><span class="badge">M</span>EnvoyPlugin</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.EnvoyPlugin.Listener"><span class="badge">M</span>EnvoyPlugin.Listener</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.WorkloadSelector"><span class="badge">M</span>WorkloadSelector</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.WorkloadSelector.LabelsEntry"><span class="badge">M</span>WorkloadSelector.LabelsEntry</a>
                </li>
              
              
              
              
            </ul>
          </li>
        
          
          <li>
            <a href="#pkg%2fapis%2fmicroservice%2fv1alpha1%2fplugin_manager.proto">pkg/apis/microservice/v1alpha1/plugin_manager.proto</a>
            <ul>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.Inline"><span class="badge">M</span>Inline</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.Plugin"><span class="badge">M</span>Plugin</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.PluginManager"><span class="badge">M</span>PluginManager</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.PluginManager.WorkloadLabelsEntry"><span class="badge">M</span>PluginManager.WorkloadLabelsEntry</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.Wasm"><span class="badge">M</span>Wasm</a>
                </li>
              
              
                <li>
                  <a href="#netease.microservice.v1alpha1.Plugin.ListenerType"><span class="badge">E</span>Plugin.ListenerType</a>
                </li>
              
              
              
            </ul>
          </li>
        
          
          <li>
            <a href="#pkg%2fapis%2fmicroservice%2fv1alpha1%2fservice_fence.proto">pkg/apis/microservice/v1alpha1/service_fence.proto</a>
            <ul>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.Destinations"><span class="badge">M</span>Destinations</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.RecyclingStrategy"><span class="badge">M</span>RecyclingStrategy</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.RecyclingStrategy.Auto"><span class="badge">M</span>RecyclingStrategy.Auto</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.RecyclingStrategy.Deadline"><span class="badge">M</span>RecyclingStrategy.Deadline</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.RecyclingStrategy.Stable"><span class="badge">M</span>RecyclingStrategy.Stable</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.ServiceFenceSpec"><span class="badge">M</span>ServiceFenceSpec</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.ServiceFenceSpec.HostEntry"><span class="badge">M</span>ServiceFenceSpec.HostEntry</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.ServiceFenceStatus"><span class="badge">M</span>ServiceFenceStatus</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.ServiceFenceStatus.DomainsEntry"><span class="badge">M</span>ServiceFenceStatus.DomainsEntry</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.ServiceFenceStatus.MetricStatusEntry"><span class="badge">M</span>ServiceFenceStatus.MetricStatusEntry</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.ServiceFenceStatus.VisitorEntry"><span class="badge">M</span>ServiceFenceStatus.VisitorEntry</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.Timestamp"><span class="badge">M</span>Timestamp</a>
                </li>
              
              
                <li>
                  <a href="#netease.microservice.v1alpha1.Destinations.Status"><span class="badge">E</span>Destinations.Status</a>
                </li>
              
              
              
            </ul>
          </li>
        
          
          <li>
            <a href="#pkg%2fapis%2fmicroservice%2fv1alpha1%2fsmart_limiter.proto">pkg/apis/microservice/v1alpha1/smart_limiter.proto</a>
            <ul>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimitDescriptor"><span class="badge">M</span>SmartLimitDescriptor</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimitDescriptor.Action"><span class="badge">M</span>SmartLimitDescriptor.Action</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimitDescriptor.HeaderMatcher"><span class="badge">M</span>SmartLimitDescriptor.HeaderMatcher</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimitDescriptors"><span class="badge">M</span>SmartLimitDescriptors</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimiterSpec"><span class="badge">M</span>SmartLimiterSpec</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimiterSpec.SetsEntry"><span class="badge">M</span>SmartLimiterSpec.SetsEntry</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimiterStatus"><span class="badge">M</span>SmartLimiterStatus</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimiterStatus.MetricStatusEntry"><span class="badge">M</span>SmartLimiterStatus.MetricStatusEntry</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimiterStatus.RatelimitStatusEntry"><span class="badge">M</span>SmartLimiterStatus.RatelimitStatusEntry</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus"><span class="badge">M</span>SmartLimiterStatus.ServiceStatus</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus.Listener"><span class="badge">M</span>SmartLimiterStatus.ServiceStatus.Listener</a>
                </li>
              
                <li>
                  <a href="#netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus.SelectorEntry"><span class="badge">M</span>SmartLimiterStatus.ServiceStatus.SelectorEntry</a>
                </li>
              
              
              
              
            </ul>
          </li>
        
        <li><a href="#scalar-value-types">Scalar Value Types</a></li>
      </ul>
    </div>

    
      
      <div class="file-heading">
        <h2 id="pkg/apis/microservice/v1alpha1/envoy_plugin.proto">pkg/apis/microservice/v1alpha1/envoy_plugin.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="netease.microservice.v1alpha1.EnvoyPlugin">EnvoyPlugin</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>workload_selector</td>
                  <td><a href="#netease.microservice.v1alpha1.WorkloadSelector">WorkloadSelector</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>route</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>route level plugin </p></td>
                </tr>
              
                <tr>
                  <td>host</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>host level plugin </p></td>
                </tr>
              
                <tr>
                  <td>service</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>service level plugin </p></td>
                </tr>
              
                <tr>
                  <td>plugins</td>
                  <td><a href="#netease.microservice.v1alpha1.Plugin">Plugin</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>gateway</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>which gateway should use this plugin setting </p></td>
                </tr>
              
                <tr>
                  <td>user</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>which user should use this plugin setting </p></td>
                </tr>
              
                <tr>
                  <td>isGroupSetting</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Deprecated </p></td>
                </tr>
              
                <tr>
                  <td>listener</td>
                  <td><a href="#netease.microservice.v1alpha1.EnvoyPlugin.Listener">EnvoyPlugin.Listener</a></td>
                  <td>repeated</td>
                  <td><p>listener level </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.EnvoyPlugin.Listener">EnvoyPlugin.Listener</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>port</td>
                  <td><a href="#uint32">uint32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>outbound</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.WorkloadSelector">WorkloadSelector</h3>
        <p>`WorkloadSelector` specifies the criteria used to determine if the</p><p>`Gateway`, `Sidecar`, or `EnvoyFilter` or `ServiceEntry`</p><p>configuration can be applied to a proxy. The matching criteria</p><p>includes the metadata associated with a proxy, workload instance</p><p>info such as labels attached to the pod/VM, or any other info that</p><p>the proxy provides to Istio during the initial handshake. If</p><p>multiple conditions are specified, all conditions need to match in</p><p>order for the workload instance to be selected. Currently, only</p><p>label based selection mechanism is supported.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>labels</td>
                  <td><a href="#netease.microservice.v1alpha1.WorkloadSelector.LabelsEntry">WorkloadSelector.LabelsEntry</a></td>
                  <td>repeated</td>
                  <td><p>One or more labels that indicate a specific set of pods/VMs
on which the configuration should be applied. The scope of
label search is restricted to the configuration namespace in which the
the resource is present. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.WorkloadSelector.LabelsEntry">WorkloadSelector.LabelsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      

      

      
    
      
      <div class="file-heading">
        <h2 id="pkg/apis/microservice/v1alpha1/plugin_manager.proto">pkg/apis/microservice/v1alpha1/plugin_manager.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="netease.microservice.v1alpha1.Inline">Inline</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>settings</td>
                  <td><a href="#google.protobuf.Struct">google.protobuf.Struct</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.Plugin">Plugin</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>enable</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>settings</td>
                  <td><a href="#google.protobuf.Struct">google.protobuf.Struct</a></td>
                  <td></td>
                  <td><p>Deprecated </p></td>
                </tr>
              
                <tr>
                  <td>listenerType</td>
                  <td><a href="#netease.microservice.v1alpha1.Plugin.ListenerType">Plugin.ListenerType</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>type_url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>wasm</td>
                  <td><a href="#netease.microservice.v1alpha1.Wasm">Wasm</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>inline</td>
                  <td><a href="#netease.microservice.v1alpha1.Inline">Inline</a></td>
                  <td></td>
                  <td><p>plugin compiled inside envoy </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.PluginManager">PluginManager</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>workload_labels</td>
                  <td><a href="#netease.microservice.v1alpha1.PluginManager.WorkloadLabelsEntry">PluginManager.WorkloadLabelsEntry</a></td>
                  <td>repeated</td>
                  <td><p>Zero or more labels that indicate a specific set of pods/VMs whose
proxies should be configured to use these additional filters.  The
scope of label search is platform dependent. On Kubernetes, for
example, the scope includes pods running in all reachable
namespaces. Omitting the selector applies the filter to all proxies in
the mesh. </p></td>
                </tr>
              
                <tr>
                  <td>plugin</td>
                  <td><a href="#netease.microservice.v1alpha1.Plugin">Plugin</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>gateways</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Names of gateways where the rule should be applied to. Gateway names
at the top of the VirtualService (if any) are overridden. The gateway
match is independent of sourceLabels. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.PluginManager.WorkloadLabelsEntry">PluginManager.WorkloadLabelsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.Wasm">Wasm</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>rootID</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>fileName</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>settings</td>
                  <td><a href="#google.protobuf.Struct">google.protobuf.Struct</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="netease.microservice.v1alpha1.Plugin.ListenerType">Plugin.ListenerType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>Outbound</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>Inbound</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
    
      
      <div class="file-heading">
        <h2 id="pkg/apis/microservice/v1alpha1/service_fence.proto">pkg/apis/microservice/v1alpha1/service_fence.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="netease.microservice.v1alpha1.Destinations">Destinations</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>RecentlyCalled</td>
                  <td><a href="#netease.microservice.v1alpha1.Timestamp">Timestamp</a></td>
                  <td></td>
                  <td><p>Deprecated </p></td>
                </tr>
              
                <tr>
                  <td>hosts</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>status</td>
                  <td><a href="#netease.microservice.v1alpha1.Destinations.Status">Destinations.Status</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.RecyclingStrategy">RecyclingStrategy</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>stable</td>
                  <td><a href="#netease.microservice.v1alpha1.RecyclingStrategy.Stable">RecyclingStrategy.Stable</a></td>
                  <td></td>
                  <td><p>Configuration that will not be cleaned up </p></td>
                </tr>
              
                <tr>
                  <td>deadline</td>
                  <td><a href="#netease.microservice.v1alpha1.RecyclingStrategy.Deadline">RecyclingStrategy.Deadline</a></td>
                  <td></td>
                  <td><p>Configurations that expire after expiration </p></td>
                </tr>
              
                <tr>
                  <td>auto</td>
                  <td><a href="#netease.microservice.v1alpha1.RecyclingStrategy.Auto">RecyclingStrategy.Auto</a></td>
                  <td></td>
                  <td><p>Deprecated </p></td>
                </tr>
              
                <tr>
                  <td>RecentlyCalled</td>
                  <td><a href="#netease.microservice.v1alpha1.Timestamp">Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.RecyclingStrategy.Auto">RecyclingStrategy.Auto</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>duration</td>
                  <td><a href="#netease.microservice.v1alpha1.Timestamp">Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.RecyclingStrategy.Deadline">RecyclingStrategy.Deadline</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>expire</td>
                  <td><a href="#netease.microservice.v1alpha1.Timestamp">Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.RecyclingStrategy.Stable">RecyclingStrategy.Stable</h3>
        <p></p>

        

        
      
        <h3 id="netease.microservice.v1alpha1.ServiceFenceSpec">ServiceFenceSpec</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>host</td>
                  <td><a href="#netease.microservice.v1alpha1.ServiceFenceSpec.HostEntry">ServiceFenceSpec.HostEntry</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>enable</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Switch to render servicefence as sidecar </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.ServiceFenceSpec.HostEntry">ServiceFenceSpec.HostEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#netease.microservice.v1alpha1.RecyclingStrategy">RecyclingStrategy</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.ServiceFenceStatus">ServiceFenceStatus</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>domains</td>
                  <td><a href="#netease.microservice.v1alpha1.ServiceFenceStatus.DomainsEntry">ServiceFenceStatus.DomainsEntry</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>metricStatus</td>
                  <td><a href="#netease.microservice.v1alpha1.ServiceFenceStatus.MetricStatusEntry">ServiceFenceStatus.MetricStatusEntry</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>visitor</td>
                  <td><a href="#netease.microservice.v1alpha1.ServiceFenceStatus.VisitorEntry">ServiceFenceStatus.VisitorEntry</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.ServiceFenceStatus.DomainsEntry">ServiceFenceStatus.DomainsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#netease.microservice.v1alpha1.Destinations">Destinations</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.ServiceFenceStatus.MetricStatusEntry">ServiceFenceStatus.MetricStatusEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.ServiceFenceStatus.VisitorEntry">ServiceFenceStatus.VisitorEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.Timestamp">Timestamp</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>seconds</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>Represents seconds of UTC time since Unix epoch
1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
9999-12-31T23:59:59Z inclusive. </p></td>
                </tr>
              
                <tr>
                  <td>nanos</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Non-negative fractions of a second at nanosecond resolution. Negative
second values with fractions must still have non-negative nanos values
that count forward in time. Must be from 0 to 999,999,999
inclusive. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="netease.microservice.v1alpha1.Destinations.Status">Destinations.Status</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ACTIVE</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>EXPIRE</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
    
      
      <div class="file-heading">
        <h2 id="pkg/apis/microservice/v1alpha1/smart_limiter.proto">pkg/apis/microservice/v1alpha1/smart_limiter.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="netease.microservice.v1alpha1.SmartLimitDescriptor">SmartLimitDescriptor</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>condition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>rate-limit departure conditions, which can be a template expression.
When the expression value is true, the limit will be triggered </p></td>
                </tr>
              
                <tr>
                  <td>action</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimitDescriptor.Action">SmartLimitDescriptor.Action</a></td>
                  <td></td>
                  <td><p>Limited traffic behavior </p></td>
                </tr>
              
                <tr>
                  <td>match</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimitDescriptor.HeaderMatcher">SmartLimitDescriptor.HeaderMatcher</a></td>
                  <td>repeated</td>
                  <td><p>not support </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimitDescriptor.Action">SmartLimitDescriptor.Action</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>quota</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>rate-limit quota, which can be a template expression </p></td>
                </tr>
              
                <tr>
                  <td>fill_interval</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimitDescriptor.HeaderMatcher">SmartLimitDescriptor.HeaderMatcher</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>exact_match</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>regex_match</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>present_match</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>prefix_match</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>suffix_match</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>invert_match</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimitDescriptors">SmartLimitDescriptors</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>descriptor</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimitDescriptor">SmartLimitDescriptor</a></td>
                  <td>repeated</td>
                  <td><p>Description of current rate-limit </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimiterSpec">SmartLimiterSpec</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>domain</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>sets</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimiterSpec.SetsEntry">SmartLimiterSpec.SetsEntry</a></td>
                  <td>repeated</td>
                  <td><p>subset rate-limit,the key is subset name. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimiterSpec.SetsEntry">SmartLimiterSpec.SetsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimitDescriptors">SmartLimitDescriptors</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimiterStatus">SmartLimiterStatus</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>ratelimitStatus</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimiterStatus.RatelimitStatusEntry">SmartLimiterStatus.RatelimitStatusEntry</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>metricStatus</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimiterStatus.MetricStatusEntry">SmartLimiterStatus.MetricStatusEntry</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>serviceStatus</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus">SmartLimiterStatus.ServiceStatus</a></td>
                  <td></td>
                  <td><p>Deprecated </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimiterStatus.MetricStatusEntry">SmartLimiterStatus.MetricStatusEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimiterStatus.RatelimitStatusEntry">SmartLimiterStatus.RatelimitStatusEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimitDescriptors">SmartLimitDescriptors</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus">SmartLimiterStatus.ServiceStatus</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>selector</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus.SelectorEntry">SmartLimiterStatus.ServiceStatus.SelectorEntry</a></td>
                  <td>repeated</td>
                  <td><p>Deprecated </p></td>
                </tr>
              
                <tr>
                  <td>listener</td>
                  <td><a href="#netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus.Listener">SmartLimiterStatus.ServiceStatus.Listener</a></td>
                  <td>repeated</td>
                  <td><p>Deprecated </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus.Listener">SmartLimiterStatus.ServiceStatus.Listener</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Deprecated </p></td>
                </tr>
              
                <tr>
                  <td>port</td>
                  <td><a href="#uint32">uint32</a></td>
                  <td></td>
                  <td><p>Deprecated </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="netease.microservice.v1alpha1.SmartLimiterStatus.ServiceStatus.SelectorEntry">SmartLimiterStatus.ServiceStatus.SelectorEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      

      

      
    

    <h2 id="scalar-value-types">Scalar Value Types</h2>
    <table class="scalar-value-types-table">
      <thead>
        <tr><td>.proto Type</td><td>Notes</td><td>C++</td><td>Java</td><td>Python</td><td>Go</td><td>C#</td><td>PHP</td><td>Ruby</td></tr>
      </thead>
      <tbody>
        
          <tr id="double">
            <td>double</td>
            <td></td>
            <td>double</td>
            <td>double</td>
            <td>float</td>
            <td>float64</td>
            <td>double</td>
            <td>float</td>
            <td>Float</td>
          </tr>
        
          <tr id="float">
            <td>float</td>
            <td></td>
            <td>float</td>
            <td>float</td>
            <td>float</td>
            <td>float32</td>
            <td>float</td>
            <td>float</td>
            <td>Float</td>
          </tr>
        
          <tr id="int32">
            <td>int32</td>
            <td>Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.</td>
            <td>int32</td>
            <td>int</td>
            <td>int</td>
            <td>int32</td>
            <td>int</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="int64">
            <td>int64</td>
            <td>Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.</td>
            <td>int64</td>
            <td>long</td>
            <td>int/long</td>
            <td>int64</td>
            <td>long</td>
            <td>integer/string</td>
            <td>Bignum</td>
          </tr>
        
          <tr id="uint32">
            <td>uint32</td>
            <td>Uses variable-length encoding.</td>
            <td>uint32</td>
            <td>int</td>
            <td>int/long</td>
            <td>uint32</td>
            <td>uint</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="uint64">
            <td>uint64</td>
            <td>Uses variable-length encoding.</td>
            <td>uint64</td>
            <td>long</td>
            <td>int/long</td>
            <td>uint64</td>
            <td>ulong</td>
            <td>integer/string</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="sint32">
            <td>sint32</td>
            <td>Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.</td>
            <td>int32</td>
            <td>int</td>
            <td>int</td>
            <td>int32</td>
            <td>int</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="sint64">
            <td>sint64</td>
            <td>Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.</td>
            <td>int64</td>
            <td>long</td>
            <td>int/long</td>
            <td>int64</td>
            <td>long</td>
            <td>integer/string</td>
            <td>Bignum</td>
          </tr>
        
          <tr id="fixed32">
            <td>fixed32</td>
            <td>Always four bytes. More efficient than uint32 if values are often greater than 2^28.</td>
            <td>uint32</td>
            <td>int</td>
            <td>int</td>
            <td>uint32</td>
            <td>uint</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="fixed64">
            <td>fixed64</td>
            <td>Always eight bytes. More efficient than uint64 if values are often greater than 2^56.</td>
            <td>uint64</td>
            <td>long</td>
            <td>int/long</td>
            <td>uint64</td>
            <td>ulong</td>
            <td>integer/string</td>
            <td>Bignum</td>
          </tr>
        
          <tr id="sfixed32">
            <td>sfixed32</td>
            <td>Always four bytes.</td>
            <td>int32</td>
            <td>int</td>
            <td>int</td>
            <td>int32</td>
            <td>int</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="sfixed64">
            <td>sfixed64</td>
            <td>Always eight bytes.</td>
            <td>int64</td>
            <td>long</td>
            <td>int/long</td>
            <td>int64</td>
            <td>long</td>
            <td>integer/string</td>
            <td>Bignum</td>
          </tr>
        
          <tr id="bool">
            <td>bool</td>
            <td></td>
            <td>bool</td>
            <td>boolean</td>
            <td>boolean</td>
            <td>bool</td>
            <td>bool</td>
            <td>boolean</td>
            <td>TrueClass/FalseClass</td>
          </tr>
        
          <tr id="string">
            <td>string</td>
            <td>A string must always contain UTF-8 encoded or 7-bit ASCII text.</td>
            <td>string</td>
            <td>String</td>
            <td>str/unicode</td>
            <td>string</td>
            <td>string</td>
            <td>string</td>
            <td>String (UTF-8)</td>
          </tr>
        
          <tr id="bytes">
            <td>bytes</td>
            <td>May contain any arbitrary sequence of bytes.</td>
            <td>string</td>
            <td>ByteString</td>
            <td>str</td>
            <td>[]byte</td>
            <td>ByteString</td>
            <td>string</td>
            <td>String (ASCII-8BIT)</td>
          </tr>
        
      </tbody>
    </table>
  </body>
</html>

